package eSchool.BL;

import eSchool.DataLayer.DAOFactory;
import eSchool.DataLayer.IDisciplinaDAO;
import eSchool.Utils.TextHelper;
import java.io.Serializable;
import java.util.ArrayList;


public class Disciplina extends BasicEntityObject implements IDadosEntidade, Serializable {

    private AlunosInscritos alunoInscrito;
    private ComponentesAvaliacao mComponentesAvaliacao;
    private String codDisciplina;
    private String nomeDisciplina;
    private int docente;
    private int docenteResponsavel;
   
    public Disciplina() {
        codDisciplina = TextHelper.EmptyString;
        nomeDisciplina = TextHelper.EmptyString;
    }
    
    public Disciplina(String codDisciplina) throws Exception {
        this.leDados(codDisciplina);
    }

    public String getCodDisciplina() {
        return codDisciplina;
    }

    public void setCodDisciplina(String val) {
        this.codDisciplina = val;
    }

    public int getDocente() {
        return docente;
    }

    public void setDocente(int val) {
        this.docente = val;
    }
    
    public int getDocenteResponsavel() {
        return docenteResponsavel;
    }

    public void setDocenteResponsavel(int val) {
        this.docenteResponsavel = val;
    }
    

    public String getNomeDisciplina() {
        return nomeDisciplina;
    }

    public void setNomeDisciplina(String val) {
        this.nomeDisciplina = val;
    }

    public String[][] toStringArray() {
        return null;
    }

    public ComponentesAvaliacao getComponentesAvaliacao() {
        return mComponentesAvaliacao;
    }

    public void setComponentesAvaliacao(ComponentesAvaliacao val) {
        this.mComponentesAvaliacao = val;
    }

    @Override
    public void gravaDados() throws Exception {
        DAOFactory factory = DAOFactory.getDAOFactory(DAOFactory.ACCESS);
        IDisciplinaDAO disciplinaDAO = factory.getDisciplinaDAO();
        if(disciplinaDAO.findDisciplina(this.codDisciplina)== null)
            disciplinaDAO.insertDisciplina(this);
        else
            disciplinaDAO.updateDisciplina(this);
            

    }

    @Override
    public void leDados() throws Exception {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    public void leDados(String codDisciplina) throws Exception {
        DAOFactory factory = DAOFactory.getDAOFactory(DAOFactory.ACCESS);
        IDisciplinaDAO disciplinaDAO = factory.getDisciplinaDAO();
        disciplinaDAO.findDisciplina(this, codDisciplina);
    }

    
    public int getColumnCount() {
        return 4;
    }

    public String getColumnName(int columnIndex) {
        switch (columnIndex) {
            case 0:
                return "codDisciplina";
            case 1:
                return "nomeDisciplina";
            case 2:
                return "docente";
            case 3:
                return "docenteResponsavel";
            default:
                return null;
        }
    }

    public Class<?> getColumnClass(int columnIndex) {
         switch (columnIndex) {
            case 0:
                return codDisciplina.getClass();
            case 1:
                return nomeDisciplina.getClass();
            case 2:
                return ((Integer) docente).getClass();
            case 3:
                return ((Integer) docenteResponsavel).getClass();        
            default:
                return null;
       }
    }

    public boolean isCellEditable(int rowIndex, int columnIndex) {
        return false;
    }

    public Object getValueAt(int rowIndex, int columnIndex) {
        switch (columnIndex) {
            case 0:
                return codDisciplina;
            case 1:
                return nomeDisciplina;
            case 2:
                return docente;
            case 3:
                return docenteResponsavel;
                
            default:
                return null;
        }
    }

    public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
        switch (columnIndex) {
            case 0:
                codDisciplina = TextHelper.toString(aValue);
                break;
            case 1:
                nomeDisciplina = TextHelper.toString(aValue);
                break;
            case 2:
                docente = Integer.parseInt(TextHelper.toString(aValue));
                break;
            case 3:
                docenteResponsavel = Integer.parseInt(TextHelper.toString(aValue));
                break;                
            default:
                break;
        }
    }

    public ArrayList<AlunoInscrito> getAlunoInscrito() {
        return alunoInscrito;
    }
}

